package gui;

import interfaces.ProdutoInterface;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSpinner;
import javax.swing.JTextPane;
import javax.swing.SpinnerModel;
import javax.swing.SpinnerNumberModel;

public class AbaInfoProduto extends JPanel {

	private static final long serialVersionUID = 1L;

	private ProdutoInterface produto;

	private JPanel painelEsquerda, painelCentro, painelDireita,
			painelQuantidadeDesejada;

	private JLabel labelNome, labelFabricante, labelPreco, labelDataFab,
			labelDisponivel, labelDesejado;

	private JSpinner spinner;

	private SpinnerModel model;

	private JButton buttonAdicionar, buttonVoltar;

	private JTextPane textoDescricao;

	public AbaInfoProduto(ProdutoInterface p) {
		setProduto(p);
	}

	public void setProduto(ProdutoInterface p) {
		removeAll();
		this.setLayout(new BoxLayout(this, BoxLayout.X_AXIS));

		this.produto = p;

		if (produto != null) {
			int max = produto.getQuantidadeCarrinho();
			if (max > 10)
				max = 10;

			labelNome = new JLabel("Nome do produto: " + produto.getNome());
			labelFabricante = new JLabel("Fabricante: "
					+ produto.getFabricante());
			labelPreco = new JLabel("Preco unitario: "
					+ produto.getValorVenda());
			labelDataFab = new JLabel("Data de fabricacao: ");
			labelDisponivel = new JLabel("Quantidade disponivel: "
					+ produto.getQuantidadeCarrinho());
			labelDesejado = new JLabel("Quantidade desejada: ");

			buttonAdicionar = new JButton("+ Carrinho");
			buttonAdicionar.addActionListener(new Ouvinte());
			buttonVoltar = new JButton("Voltar");
			buttonVoltar.addActionListener(new Ouvinte());

			model = new SpinnerNumberModel(1, 1, max, 1);
			spinner = new JSpinner(model);

			textoDescricao = new JTextPane();
			textoDescricao.setEditable(false);

			painelEsquerda = new JPanel();
			painelEsquerda.setLayout(new BoxLayout(painelEsquerda,
					BoxLayout.Y_AXIS));
			// adicionar a foto no painel da esquerda;

			painelCentro = new JPanel();
			painelCentro
					.setLayout(new BoxLayout(painelCentro, BoxLayout.Y_AXIS));

			painelQuantidadeDesejada = new JPanel();

			painelCentro.add(labelNome);
			painelCentro.add(labelFabricante);
			painelCentro.add(labelPreco);
			painelCentro.add(labelDataFab);
			painelCentro.add(textoDescricao);
			painelCentro.add(labelDisponivel);
			painelCentro.add(painelQuantidadeDesejada);

			painelQuantidadeDesejada.add(labelDesejado);
			painelQuantidadeDesejada.add(spinner);

			painelDireita = new JPanel();
			painelDireita.setLayout(new BoxLayout(painelDireita,
					BoxLayout.Y_AXIS));

			painelDireita.add(buttonAdicionar);
			painelDireita.add(buttonVoltar);

			this.add(painelEsquerda);
			this.add(painelCentro);
			this.add(painelDireita);
			validate();
		}
	}

	public void getFocus() {
		if (Principal.cliente != null) {
			buttonAdicionar.setEnabled(true);
		} else {
			buttonAdicionar.setEnabled(false);
		}
	}

	class Ouvinte implements ActionListener {

		public void actionPerformed(ActionEvent arg0) {
			// TODO Auto-generated method stub

			if (arg0.getSource() == buttonAdicionar) {

				if (Principal.cliente == null) {

				} else {
					SpinnerNumberModel sn = (SpinnerNumberModel) spinner
							.getModel();
					int quantidade = sn.getNumber().intValue();

					try {
						Principal.servidor.adicionaAoCarrinho(produto,
								quantidade);
						Principal.itensCarrinho.put(produto, quantidade);
						Principal.tabManager.setEnabledAt("Informacoes", false);
						Principal.tabManager.setSelectedTab("Consulta");
					} catch (RemoteException e) {
						e.printStackTrace();
						JOptionPane.showMessageDialog(Principal.janela,
								"Erro ao adicionar ao carrinho");
						Principal.tabManager.setEnabledAt("Informacoes", false);
						Principal.tabManager.setSelectedTab("Consulta");
					}
				}

			} else { // chamada veio de voltar
				Principal.tabManager.setSelectedTab("Consulta");
			}
		}
	}

}
